package com.ww.java8.fp.lambda;

import java.util.function.BiConsumer;

public class MethodConversion {

    static void accept(In1 i1, In2 i2) {
        System.out.println("accept()");
    }

    static void someOtherName(In1 i1, In2 i2) {
        System.out.println("someOtherName()");
    }

    public static void main(String[] args) {
        BiConsumer<In1, In2> bic;

        bic = MethodConversion::accept;
        bic.accept(new In1(), new In2());

        /**
         * BiConsumer的函数式方法为accept()
         * 也可用不同的名称，比如此处使用someOtherName()，只要参数类型、返回类型与BiConsumer的accept相同即可
         * 因此在使用函数式接口时，名称无关紧要——只要参数类型和返回类型相同。Java会将你的方法映射到接口方法。
         */
        bic = MethodConversion::someOtherName;
        bic.accept(new In1(), new In2());
    }
}

class In1 {}
class In2 {}